if(!window.mc){
	window.mc = function(){};
}
window.mc.tape = function(){};

mc.tape.init = function(target){
	this.target = target;
	this.re_fm = /\[([\w\s,а-яА-Я]+)\]/g;
	this.click_delegate(target);
	this.lock = $("<img src=\"/i/lock.png\"/>").css({
			display: "none",
			position: "absolute",
			cursor: "pointer"
	}).appendTo("body").click(function(){
		mc.tape.lock.hide();
		mc.tape.scroll_stop = false;
		if(mc.tape.scroll_need){
			mc.tape.target.data().jsp.scrollToBottom();
			mc.tape.scroll_need = false;
		}
	});
	target.click(
		function(){
			if(!mc.tape.scroll_stop){
				var off = mc.tape.target.offset();
				//var d = "top: " + off.top + " left: " + off.left;
				off.top += 10;
				off.left += mc.tape.target.width();
				off.left -= 25 + 20;
				mc.tape.lock.show().offset({top:0,left:0});
				mc.tape.lock.offset(off);
				//d += " / top: " + off.top + " left: " + off.left;
				//off = mc.tape.lock.offset();
				//d += " / top: " + off.top + " left: " + off.left;
				//dbg(d);
				mc.tape.scroll_stop = true;
			}
			return false;
		}
	);
}
// помещает на ленту готопое сообщение
mc.tape.put_message = function(t){
	var prof = mc.prof();
	var api = this.target.data().jsp;
	mc.prof(prof);

	var pane = api.getContentPane();
	mc.prof(prof);
	var list = pane.children();
	mc.prof(prof);
	if(list.length > mc.main.max_str){
		list.slice(0,mc.main.del_str).remove()
	}
	mc.prof(prof);
	pane.append(t);
	mc.prof(prof);

	api.reinitialise();
	mc.prof(prof);

	if(mc.setting.timing){
		var str = '<div class="msg inn">lines:' + list.length + " " + mc.prof_str(prof) + '</div>';
		api.getContentPane().append(str);
	}

	if(!this.scroll_stop){
		api.scrollToBottom(mc.setting.animate);
	}else{
		this.scroll_need = true;
	}
}
// форматирует стандартное сообщение и помещяет на ленту
mc.tape.put_format_message = function(t){
	var fm = this.format_message(t)
	return this.put_message(fm);
}
// форматирует сообщение для консоли и помещает на ленту
mc.tape.put_console = function(msg){
	var str = '<div class="msg inn"><span class=time>' + mc.ts() + '</span>: ' + msg + '</div>';
	this.put_message(str);
}
// форматирует стандартное сообщение
mc.tape.format_message = function(msg){
	this.crl = "login ";
	if(msg.private){
		this.crl += "priv";
	}else{
		this.crl += "comm";
	}
	this.crl = '"' + this.crl + '"';
	this.self = false;
	var rt = msg.text.replace(this.re_fm,this.format_replace);

	var d = "msg";
	if(msg.from && msg.from == mc.main.login){
		d += " self";
	}else if(this.self){
		d += " to";
	}else{
		d += " com";
	}
	if(msg.mclass){
		d += " " + msg.mclass;
	}
	var str = '<div class="' + d + '" mid="' + msg.mid + '" from="' + msg.from + '">';
	str += '<span class=time title="' + mc.ts() + '">' + mc.ts(msg.ats) + '</span>';
	if(msg.from){
		str += " [<span class=" + this.crl + ">" + msg.title + "</span>]";
	}
	if(mc.smiles){
		rt = mc.smiles(rt);
	}
	str += ": " + rt +"</div>";
	return str;
}
// call-back для форматирование логинов
mc.tape.format_replace = function(f,list){
	var all = list.split(",");
	var ary = [];
	for(var i = 0;i < all.length;i++){
		all[i] = all[i].replace(/^\s+/,"").replace(/\s+$/,"");
		ary.push("<span class=" + mc.tape.crl + ">" + all[i] + "</span>");
		if(all[i] == mc.main.login){
			mc.tape.self = true;
		}
	}
	return " [" + ary.join(",") + "]";
}
mc.tape.clear = function(){
	var api = this.target.data().jsp;
	api.getContentPane().html("");
	api.reinitialise();
}
mc.tape.click_delegate = function(obj){
	obj
	.delegate("a.ext",'click',function(event){
			event.stopImmediatePropagation();
			return true;
		})
	.delegate("a.cmd",'click',function(event){
			mc.inputer.process($(this).html());
			event.stopImmediatePropagation();
			return false;
		})
	.delegate("a.inp",'click',function(event){
			mc.inputer.rewrite($(this).html());
			event.stopImmediatePropagation();
			return false;
		})
	.delegate("span.login",'click',function(event){
			mc.inputer.insert_login($(this).html(),$(this).hasClass("priv"));
			event.stopImmediatePropagation();
			return false;
		})
	.delegate("img.sm",'click',function(event){
		var f = $(this).attr("src").match(/\/(\w+)\.gif/);
		if(f){
			mc.inputer.insert(":" + f[1] + ":");
		}
		event.stopImmediatePropagation();
		return false;
	});
}

